<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
	<head>
		<th:block th:include="include :: header('代码生成列表')" />
	</head>
	<body class="gray-bg">
		<div class="container-div">
			<div class="row">
				<div class="col-sm-12 search-collapse">
					<form id="gen-form">
						<div class="select-list">
							<ul>
								<li>
									表名称：<input type="text" name="tableName" />
								</li>
								<li>
									表描述：<input type="text" name="tableComment" />
								</li>
								<li class="select-time">
									<label>表时间： </label>
									<input type="text" class="time-input" id="startTime" placeholder="开始时间"
										name="params[beginTime]" />
									<span>-</span>
									<input type="text" class="time-input" id="endTime" placeholder="结束时间"
										name="params[endTime]" />
								</li>
								<li>
									<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
											class="fa fa-search"></i>&nbsp;搜索</a>
									<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
											class="fa fa-refresh"></i>&nbsp;重置</a>
								</li>
							</ul>
						</div>
					</form>
				</div>

				<div class="btn-group-sm" id="toolbar" role="group">
			 	<a class="btn btn-success multiple disabled" onclick="javascript:batchGenCode()"
						shiro:hasPermission="tool:gen:code">
						<i class="fa fa-download"></i> 生成
					</a>
					<a class="btn btn-success" onclick="createTable()" shiro:hasRole="admin">
						<i class="fa fa-plus"></i> 创建
					</a>
					<a class="btn btn-info" onclick="importTable()">
						<i class="fa fa-upload"></i> 导入
					</a>
					<a class="btn btn-primary single disabled" onclick="$.operate.editTab()"
						shiro:hasPermission="tool:gen:edit">
						<i class="fa fa-edit"></i> 修改
					</a>
					<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
						shiro:hasPermission="tool:gen:remove">
						<i class="fa fa-remove"></i> 删除
					</a>
				</div>

				<div class="col-sm-12 select-table table-striped">
					<table id="bootstrap-table"></table>
				</div>
			</div>
		</div>
		<th:block th:include="include :: footer" />
		<th:block th:include="include :: bootstrap-table-export-js" />
		<script th:src="@{/ajax/libs/highlight/highlight.min.js}"></script>
		<script th:inline="javascript">
			var prefix = ctx + "tool/gen";
			var editFlag = [
				[$ {
					@permission.hasPermi('tool:gen:edit')
				}]
			];
			var removeFlag = [
				[$ {
					@permission.hasPermi('tool:gen:remove')
				}]
			];
			var previewFlag = [
				[$ {
					@permission.hasPermi('tool:gen:preview')
				}]
			];
			var codeFlag = [
				[$ {
					@permission.hasPermi('tool:gen:code')
				}]
			];

			$(function() {
				var options = {
					url: prefix + "/list",
					updateUrl: prefix + "/edit/{id}",
					removeUrl: prefix + "/remove",
					sortName: "createTime",
					sortOrder: "desc",
					showExport: true,
					modalName: "生成配置",
					rememberSelected: true,
					uniqueId: "tableId",
					columns: [{
							field: 'state',
							checkbox: true
						},
						{
							field: 'tableId',
							title: '编号',
							visible: false
						},
						{
							title: "序号",
							formatter: function(value, row, index) {
								return $.table.serialNumber(index);
							}
						},
						{
							field: 'tableName',
							title: '表名称',
							sortable: true,
							formatter: function(value, row, index) {
								return $.table.tooltip(value);
							}
						},
						{
							field: 'tableComment',
							title: '表描述',
							sortable: true,
							formatter: function(value, row, index) {
								return $.table.tooltip(value, 15);
							}
						},
						{
							field: 'className',
							title: '实体类名称',
							sortable: true
						},
						{
							field: 'createTime',
							title: '创建时间',
							sortable: true
						},
						{
							field: 'updateTime',
							title: '更新时间',
							sortable: true
						},
						{
							title: '操作',
							align: 'center',
							formatter: function(value, row, index) {
								var actions = [];
								actions.push('<a class="btn btn-info btn-xs ' + previewFlag +
									'" href="javascript:void(0)" onclick="preview(\'' + row.tableId +
									'\')"><i class="fa fa-search"></i>预览</a> ');
								actions.push('<a class="btn btn-success btn-xs ' + editFlag +
									'" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row
									.tableId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
								actions.push('<a class="btn btn-danger btn-xs ' + removeFlag +
									'" href="javascript:void(0)" onclick="$.operate.remove(\'' + row
									.tableId + '\')"><i class="fa fa-remove"></i>删除</a> ');
								actions.push('<a class="btn btn-warning btn-xs ' + editFlag +
									'" href="javascript:void(0)" onclick="synchDb(\'' + row.tableName +
									'\')"><i class="fa fa-refresh"></i>同步</a> ');
								actions.push('<a class="btn btn-primary btn-xs ' + codeFlag +
									'" href="javascript:void(0)" onclick="genCode(\'' + row.tableName +
									'\',\'' + row.genType + '\')"><i class="fa fa-bug"></i>生成代码</a> ');
								return actions.join('');
							}
						}
					]
				};
				$.table.init(options);
			});

			// 预览代码
			function preview(tableId) {
				var preViewUrl = prefix + "/preview/" + tableId;
				$.modal.loading("正在加载数据，请稍候...");
				$.get(preViewUrl, function(result) {
					if (result.code == web_status.SUCCESS) {
						var items = [];
						$.each(result.data, function(index, value) {
							var templateName = index.substring(index.lastIndexOf("/") + 1, index.length).replace(
								/\.vm/g, "");
							if (!$.common.equals("sql", templateName) && !$.common.equals("tree.html",
									templateName) && !$.common.equals("sub-domain.java", templateName)) {
								var codeName = templateName.replace(".", "");
								var language = templateName.substring(templateName.lastIndexOf(".") + 1);
								var highCode = hljs.highlight(language, value).value;
								items.push({
									title: templateName,
									content: "<pre class=\"layui-code\"><a style=\"float:right\" href=\"javascript:copyText('" +
										codeName +
										"')\"><i class=\"fa fa-copy\"></i> 复制</a><code id=\"" +
										codeName + "\">" + highCode + "</code></pre><textarea id=\"t_" +
										codeName +
										"\" style='position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;'></textarea><script>function copyText(codeName){var text = document.getElementById(codeName).innerText;var input = document.getElementById(\"t_\"+codeName);input.value = text;input.select();document.execCommand(\"copy\");$.modal.msgSuccess(\"复制成功\");}<\/script>"
								})
							}
						});
						top.layer.tab({
							area: ['90%', '90%'],
							shadeClose: true,
							success: function(layero, index) {
								parent.loadCss(ctx + "ajax/libs/highlight/default.min.css");
							},
							tab: items
						});
					} else {
						$.modal.alertError(result.msg);
					}
					$.modal.closeLoading();
				});
			}

			// 生成代码
			function genCode(tableName, genType) {
				$.modal.confirm("确定要生成" + tableName + "表代码吗？", function() {
					if (genType === "0") {
						location.href = prefix + "/download/" + tableName;
						layer.msg('执行成功,正在生成代码请稍候…', {
							icon: 1
						});
					} else if (genType === "1") {
						$.operate.get(prefix + "/genCode/" + tableName);
					}
				})
			}

			// 同步数据库
			function synchDb(tableName) {
				$.modal.confirm("确认要强制同步" + tableName + "表结构吗？", function() {
					$.operate.get(prefix + "/synchDb/" + tableName);
				})
			}

			// 批量生成代码
			function batchGenCode() {
				var rows = $.table.selectColumns("tableName");
				if (rows.length == 0) {
					$.modal.alertWarning("请选择要生成的数据");
					return;
				}
				$.modal.confirm("确认要生成选中的" + rows.length + "条数据吗?", function() {
					location.href = prefix + "/batchGenCode?tables=" + rows;
					layer.msg('执行成功,正在生成代码请稍候…', {
						icon: 1
					});
				});
			}

			// 导入表结构
			function importTable() {
				var importTableUrl = prefix + "/importTable";
				$.modal.open("导入表结构", importTableUrl);
			}

			// 创建表结构
			function createTable() {
				var creatTableUrl = prefix + "/createTable";
				$.modal.open("创建表结构", creatTableUrl);
			}
		</script>
	</body>
</html>
